//增量式编码器
#include "Inc_Encoder.h"
#include "tim.h"

int inc_rotation=0;
int inc_encode_acc=0;
uint16_t code_2=0;
uint16_t code=0;
void Inc_Encoder_Init()
{
	__HAL_TIM_CLEAR_FLAG(&htim3, TIM_IT_UPDATE);
	HAL_TIM_Encoder_Start(&htim3,TIM_CHANNEL_ALL);   //启动定时器编码器模式计数
	__HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE);
}
uint32_t Inc_Encode_Read(void)
{
	code=__HAL_TIM_GetCounter(&htim3);
	inc_encode_acc=(inc_rotation*TIM3_Value+(int)code);
	code_2=((inc_rotation*TIM3_Value+(int)code)%4096)&0xFFF;
	return code_2;
}

//清除编码器计数值
uint32_t Clear_Inc_Encoder()
{
	__HAL_TIM_SetCounter(&htim3, TIM3_Value);
}

uint32_t Encode_over(int8_t cw)
{
	inc_rotation+=cw;
}

